package com.bnzjy.common.result;

import lombok.Data;

import java.util.HashMap;
import java.util.Map;

@Data
public class R {

  private Integer code;
  private String message;

  private Map<String, Object> data = new HashMap();

  /**
   * 私有构造器
   */
  private R() {}

  /**
   * 返回成功的数据码
   * @return
   */
  public static R ok() {
    R r = new R();
    r.setCode(ResponseEnum.SUCCESS.getCode());
    r.setMessage(ResponseEnum.SUCCESS.getMessage());
    return r;
  }

  /**
   * 返回失败的数据码
   * @return
   */
  public static R error() {
    R r = new R();
    r.setCode(ResponseEnum.ERROR.getCode());
    r.setMessage(ResponseEnum.ERROR.getMessage());
    return r;
  }

  /**
   * 返回特定的结果集
   * @param responseEnum
   * @return
   */
  public static R setResult(ResponseEnum responseEnum) {
    R r = new R();
    r.setCode(responseEnum.getCode());
    r.setMessage(responseEnum.getMessage());
    return r;
  }
  
  public static R error(Integer code, String message) {
    R r = new R();
    r.setCode(code);
    r.setMessage(message);
    return r;
  }
  
  
  /**
   * 返回 data 里面的结果集数据
   * @param key
   * @param value
   * @return
   */
  public R data(String key, Object value) {
    this.data.put(key, value);
    return this;
  }

  public R data(Map<String, Object> map) {
    this.setData(map);
    return this;
  }

  /**
   * 设置特定的响应数据消息
   * @param message
   * @return
   */
  public R message(String message) {
    this.setMessage(message);
    return this;
  }

  /**
   * 返回特定的响应码
   * @param code
   * @return
   */
  public R code(Integer code) {
    this.setCode(code);
    return this;
  }
  
}
